

import java.util.Stack;
/**
 * 栈操作
 */

/**
 * 1.新建栈实例
 * 2.逐个压入元素到栈中 push(值)
 * 3.求栈的深度 size()
 * 4.根据索引取栈元素--先入栈的元素索引为1  get(index)
 * 5.判断栈是否为空 isEmpty()
 * 6.搜索某个值在栈中的位置--距离栈顶的位置，栈顶第一个元素位置为1  search(值)
 * 7.弹出栈顶元素，但不删除 peek()
 * 8.弹出栈顶元素，且删除  pop()
 * 9.判断栈中是否包含某值  contain(值)
 * 10.清空栈元素 clear()
 */
public class PracticsStack {
    public static void main(String[] args) {
        Stack<Integer> stack=new Stack<>();//栈里可以放任意包装类

        //压入元素到栈中
        stack.push(1);
        stack.push(2);
        stack.push(3);
        stack.push(4);


        //计算栈的深度
        System.out.println("栈的深度为："+stack.size());

        //打印栈元素
        String val="";
        for(int i=0;i<stack.size();i++){
            val=val+String.valueOf(stack.get(i))+"  ";//此处打印的时候，栈的第一个位置索引为0,最先压入的数据存在第一个位置。
        }
        System.out.println("栈内所有元素为："+val);


        //取值：根据索引取
        Integer value=stack.get(1);
        System.out.println("索引位置为1的值为："+value);

        //判断栈是否为空
        Boolean isEmpty=stack.isEmpty();
        System.out.println("栈是否为空："+isEmpty);

        //搜索某个值在栈中的位置
        int index=stack.search((Object)4);//搜索元素item在栈中的位置（从栈顶开始），如果找到则返回其距离栈顶的位置（栈顶为1），如果未找到则返回-1。
        System.out.println("栈中值为4的位置为"+index);//此处不是索引，而是size-索引的值。例如：此处size为4，4的索引为3，则位置为4-3=1


        //弹出栈顶元素，但不删除
        System.out.println(stack.peek());
        //打印栈元素
        String val2="";
        for(int i=0;i<stack.size();i++){
            val2=val2+String.valueOf(stack.get(i))+"  ";//此处打印的时候，栈的第一个位置索引为0,最先压入的数据存在第一个位置。
        }
        System.out.println("栈内所有元素为："+val2);



        //弹出栈顶元素，且删除
        System.out.println(stack.pop());

        //打印栈元素
        String val3="";
        for(int i=0;i<stack.size();i++){
            val3=val3+String.valueOf(stack.get(i))+"  ";//此处打印的时候，栈的第一个位置索引为0,最先压入的数据存在第一个位置。
        }
        System.out.println("栈内所有元素为："+val3);


        //判断栈中是否包含某个值
        System.out.println("栈中是否包含3："+stack.contains((Object)3));

        //清空栈内容
        stack.clear();
        System.out.println(stack.empty());
    }


}
